---
title: 声明异常
---
当运行发生错误时，程序就会“抛出一个异常”。抛出异常比终止程序要灵活得多，这是因为你可以提供一个处理器（handler）捕获这个异常并处理。

如果没有异常处理器，程序就会终止，并在控制台上打印出一个消息，给出异常的类型。

异常有两种类型，非检查型（unchecked）异常和检查型异常（checked）。对于检查型异常，编译器会检查你是否知道这个异常并做好准备来处理后果。
不过，有很多的异常都属于非检查型异常（例如，越界错误或者访问 null 引用）都属于非检查型异常。编译器不为这些异常提供处理器，这是因为需要尽力避免这些错误的发生。


但不是所有的错误都是可以避免的，大多数 Java API 都会抛出一个检查型异常。Class.forName 方法就是一个例子。没有办法确保有指定名字的类一定存在。
